//闭包由两部分组成：函数+可以自由访问的变量
//关于闭包的总结
/* 
1.一个普通的函数function,如果它可以访问外层作用域的自由变量，那么这个函数就是闭包
2.从广义角度说，js中的函数都是闭包
3.从狭义角度来说，js中的一个函数，如果访问了外层作用域的变量，那么就是一个闭包

*/

function foo() {
    // AO: 销毁
    var name = "foo"
    function bar() {
      console.log("bar", name)
    }
  
    return bar
  }
  
  var fn = foo()
  fn()
  
  
//盒这里也可以叫闭包
//   var name = "why"
//   function demo() {
//     console.log(name)
//   }
  
  
  // 可以访问: test就是闭包
  // 有访问到: test就是不是闭包
  function test() {
    // 1
    // 10000
  }
  